<script>
	import WebIM from './utils/WebIM.js' // 1
	// #ifdef MP-WEIXIN
	// const bynPlugin = requirePlugin('bynPlugin')
	// bynPlugin.init({
	// 	// 必填，须填入必应鸟平台的应用对应的 appKey、appSecret
	// 	appKey: 'ezjqxa',
	// 	appSecret: '057db4fc0cc37481d8c09a02b2e79eef',
	// 	// wx、openid、outUid, parentUids, icode, inviteCode 的值可以是直接值或返回该值的函数，暂不支持异步
	// 	wx: wx, // 或者 wx: () => wx，就是那个全局变量
	// 	// 必填，String，该用户的微信 openid，用于支付相关业务
	// 	openid() {
	// 		// 开发者应换成自己业务中获取用户数据的方式
	// 		const userInfo = getApp().globalData.userInfo
	// 		console.log(userInfo);
	// 		if (!userInfo?.openid) throw new Error('用户数据（openid）尚未准备妥当')
	// 		return JSON.stringify(userInfo.openid)
	// 	},
	// 	// 必填，String 用户标识（一般可以是用户ID），若使用必应鸟多个端的产品（H5、小程序等）并且想打通数据，请保证该值唯一对应
	// 	outUid: () => {
	// 		// 开发者应换成自己业务中获取用户数据的方式
	// 		const userInfo = getApp().globalData.userInfo
	// 		console.log(userInfo);
	// 		if (!userInfo?.id) throw new Error('用户数据（id）尚未准备妥当')
	// 		return JSON.stringify(userInfo.id)
	// 	},
	// 	// 可选，用户上级（们）的标识，从左到右层级由高到底，多个则以英文逗号分隔。例：'1,2,3' 1是2的上级，2是3的上级，3是该用户的上级
	// 	parentUids: () => getApp().globalData.userInfo.node_path,
	// 	// 可选，联盟合作模式下推广邀请码
	// 	icode: '',
	// 	// 可选，邀请码
	// 	inviteCode: '',
	// 	// v2.1.0，可选，默认 false，小程序是否开启了全局自定义导航
	// 	customNavigationStyle: false,
	// 	// v2.1.1，可选，设置用户的头像、昵称，可只设置一项
	// 	userProfile: () => {
	// 		return {
	// 			avatar: '',
	// 			name: ''
	// 		}
	// 	}
	// })
	// #endif
	
	export default {
		globalData: {
			userInfo:{},
		},
		onLaunch: function() {
			// console.log('App Launch')

			console.log('App Launch')
			// #ifdef H5
			var script = document.createElement('script');
			script.src = "https://turing.captcha.qcloud.com/TCaptcha.js";
			document.body.appendChild(script);
			// #endif

			// #ifdef MP-ALIPAY
			const options = my.getLaunchOptionsSync();
			if (options.query) {
				console.log("注意我走了注意我走了注意我走了注意我走了注意我走了注意我走了注意我走了");
				// 获取二维码完整链接

				let qrCode = options.query.qrCode
				// let qrCode = "https://h5-test.fudiemall.com/#/pagesMy/cloudCat/goodsDetails?id=100&invite_code=s2qe9F"
				// 获取二维码跳转的页面
				let url = qrCode.split("#")[1].split("?")[0]
				// 获取二维码参数
				let page = qrCode.split('?')[1].split('&')[0] //商品/商家的id  ===> id=xxx
				let inviteCode = qrCode.split('?')[1].split('&')[1] //分享人的邀请码  ===> invite_code=xxxx
				console.log(url, page, inviteCode, url + `?id=${page.split('=')[1]}`, "apponLaunch");
				if (inviteCode) {
					// 保存邀请人的邀请码
					uni.setStorageSync('inviteCode', inviteCode.split('=')[1])
				}
				// 保存扫码获取的商品/商家的id
				uni.setStorageSync("quick_payparam", page.split('=')[1])
			}
			// #endif
		},

		onShow: function() {
			console.log('App onShow');
			this.HxListen()
			this.getHeIght()
			// #ifdef MP-ALIPAY || MP-WEIXIN

			// #endif
		},

		onReady() {
			// #ifdef MP-WEIXIN || MP-ALIPAY

			// #endif
		},
		onHide: function() {
			// console.log('App Hide')
		},
		methods: {
			HxListen() {
				console.log('>>>>环信监听')
				uni.WebIM.conn.listen({
					onOpened: function() {
						console.log('>>>环信链接成功')
					}, //连接成功回调 
					onClosed: function() {
						console.log('>>>退出成功')
					}, //连接关闭回调
					onTextMessage: function(message) {}, //收到文本消息
					onEmojiMessage: function(message) {}, //收到表情消息
					onPictureMessage: function(message) {}, //收到图片消息
					onCmdMessage: function(message) {}, //收到命令消息
					onAudioMessage: function(message) {}, //收到音频消息
					onLocationMessage: function(message) {}, //收到位置消息
					onFileMessage: function(message) {}, //收到文件消息
					onCustomMessage: function(message) {}, //收到自定义消息
					onVideoMessage: function(message) {

					}, //收到视频消息
					onGroupEvent: function(msg) {
						switch (msg.operation) {
							// 有新群组创建。群主的其他设备会收到该回调。
							case "create":
								break;
								// 关闭群组一键禁言。群组所有成员（除操作者外）会收到该回调。
							case "unmuteAllMembers":
								break;
								// 开启群组一键禁言。群组所有成员（除操作者外）会收到该回调。
							case "muteAllMembers":
								break;
								// 有成员从群白名单中移出。被移出的成员及群主和群管理员（除操作者外）会收到该回调。
							case "removeAllowlistMember":
								break;
								// 有成员添加至群白名单。被添加的成员及群主和群管理员（除操作者外）会收到该回调。
							case "addUserToAllowlist":
								break;
								// 删除群共享文件。群组所有成员会收到该回调。
							case "deleteFile":
								break;
								// 上传群共享文件。群组所有成员会收到该回调。
							case "uploadFile":
								break;
								// 删除群公告。群组所有成员会收到该回调。
							case "deleteAnnouncement":
								break;
								// 更新群公告。群组所有成员会收到该回调。
							case "updateAnnouncement":
								break;
								// 更新群组信息，如群组名称和群组描述。群组所有成员会收到该回调。
							case "updateInfo":
								break;
								// 有成员被移出禁言列表。被解除禁言的成员及群主和群管理员（除操作者外）会收到该回调。
							case "unmuteMember":
								break;
								// 有群组成员被加入禁言列表。被禁言的成员及群主和群管理员（除操作者外）会收到该回调。
							case "muteMember":
								break;
								// 有管理员被移出管理员列表。群主、被移除的管理员和其他管理员会收到该回调。
							case "removeAdmin":
								break;
								// 设置管理员。群主、新管理员和其他管理员会收到该回调。
							case "setAdmin":
								break;
								// 转让群组。原群主和新群主会收到该回调。
							case "changeOwner":
								break;
								// 群组所有者和管理员拉用户进群时，无需用户确认时会触发该回调。被拉进群的用户会收到该回调。
							case "directJoined":
								break;
								// 群成员主动退出群组。除了退群的成员，其他群成员会收到该回调。
							case "memberAbsence":
								break;
								// 有用户加入群组。除了新成员，其他群成员会收到该回调。
							case "memberPresence":
								break;
								// 用户被移出群组。被踢出群组的成员会收到该回调。
							case "removeMember":
								break;
								// 当前用户的入群邀请被拒绝。邀请人会收到该回调。例如，用户 B 拒绝了用户 A 的入群邀请，用户 A 会收到该回调。
							case "rejectInvite":
								break;
								// 当前用户的入群邀请被接受。邀请人会收到该回调。例如，用户 B 接受了用户 A 的入群邀请，则用户 A 会收到该回调。
							case "acceptInvite":
								break;
								// 当前用户收到了入群邀请。受邀用户会收到该回调。例如，用户 B 邀请用户 A 入群，则用户 A 会收到该回调。
							case "inviteToJoin":
								break;
								// 当前用户的入群申请被拒绝。申请人会收到该回调。例如，用户 B 拒绝用户 A 的入群申请后，用户 A 会收到该回调。
							case "joinPublicGroupDeclined":
								break;
								// 当前用户的入群申请被接受。申请人会收到该回调。例如，用户 B 接受用户 A 的入群申请后，用户 A 会收到该回调。
							case "acceptRequest":
								break;
								// 当前用户发送入群申请。群主和群管理员会收到该回调。
							case "requestToJoin":
								break;
								// 群组被解散。群主解散群组时，所有群成员均会收到该回调。
							case "destroy":
								break;
								// 设置群成员的自定义属性。群组内其他成员均会收到该回调。
							case "memberAttributesUpdate":
								break;
							default:
								break;
						}
					},
					onPresence: function(message) {}, //处理“广播”或“发布-订阅”消息，如联系人订阅请求、处理群组、聊天室被踢解散等消息
					onRoster: function(message) {}, //处理好友申请
					onInviteMessage: function(message) {}, //处理群组邀请
					onOnline: function() {}, //本机网络连接成功
					onOffline: function() {}, //本机网络掉线
					onError: function(message) {}, //失败回调
					onBlacklistUpdate: function(list) { //黑名单变动
						// 查询黑名单，将好友拉黑，将好友从黑名单移除都会回调这个函数，list则是黑名单现有的所有好友信息
						console.log(list);
					},
					onRecallMessage: function(message) {}, //收到撤回消息回调
					onReceivedMessage: function(message) {}, //收到消息送达服务器回执
					onDeliveredMessage: function(message) {}, //收到消息送达客户端回执
					onReadMessage: function(message) {}, //收到消息已读回执
					onCreateGroup: function(message) {}, //创建群组成功回执（需调用createGroupNew）
					onMutedMessage: function(message) {}, //如果用户在A群组被禁言，在A群发消息会走这个回调并且消息不会传递给群其它成员
					onChannelMessage: function(message) {} //收到整个会话已读的回执，在对方发送channel ack时会在这个回调里收到消息
				});
			},
			getHeIght() {
				uni.getSystemInfo({
					success: res => {
						// #ifdef MP-ALIPAY || MP-WEIXIN
						const btnInfo = uni.getMenuButtonBoundingClientRect()
						// #endif
						let data = {
							windowHeight: res.windowHeight, //可用窗口高度
							screenHeight: res.screenHeight, //设备窗口高度
							screenWidth: res.screenWidth, //可用窗口宽度
							statusBarHeight: res.statusBarHeight, //设备导航栏高度
							// #ifdef MP-ALIPAY || MP-WEIXIN
							btnInfoTop: btnInfo.top,
							btnInfoleft: btnInfo.left,
							// #endif
							// #ifdef MP-ALIPAY
							titleHeight: res.titleBarHeight
							// #endif
							// #ifdef MP-WEIXIN
							titleHeight: (btnInfo.top - res.statusBarHeight) * 2 + btnInfo.height
							// #endif
						}
						console.log(data);
						uni.setStorageSync("navbarInfo", JSON.stringify(data))
					}
				})
			},

		}
	}
</script>

<style lang="scss">
	/* 注意要写在第一行，同时给style标签加入lang="scss"属性 */
	@import "uview-ui/index.scss";
	@import url("css/public.css");
</style>